package cn.chen.算法.排序;

import java.util.Arrays;

/**
 * 选择排序：
 * 找到最小的与第一个进行交换，在剩下的数据中找到最小的与第二个交换。。。以此类推
 * */
public class SelectSort {

    public static void main(String[] args){

        int[] arr={5,8,-1,9,6,0};
        System.out.println(Arrays.toString(arr));

        selectSort(arr);
        System.out.println(Arrays.toString(arr));

    }
    // 进行排序的方法
    public static void selectSort(int [] arr){

        // 定义一个最小索引,与记录最小值的变量
        int minIndex,min;

        for(int i=0;i<arr.length-1;i++){  // 该循环就是找最小的数的循环

            // 每一次循环之后，都将最小索引放在未排序的数据的最前面
            minIndex=i;
            min=arr[minIndex];
            for(int j=i+1;j<arr.length;j++){

                if(min>arr[j]){

                    min=arr[j]; // 将小的值赋值给min
                    minIndex=j; // 将小的值的索引赋值给minIndex
                }
            }
            // 这时候已经找到这一组的最小值了。
            if(i!=minIndex) { // 判断最小的值是否就是未排序的最前面，如果是就不能交换

                arr[minIndex]=arr[i];
                arr[i]=min;
            }
        }
    }
}
